package com.caineng.zhaobiao.zbapi.utils.blackWordFilter;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 使用该类即可替换大部分敏感词为***,包括手机号码也会替换为***
 * @author liandyao
 * @date 2022/8/1 16:10
 */
public class WordFilterUtils {
    //保证只有一个实例
    private static WordContext context = new WordContext();
    private static WordFilter wordFilter = new WordFilter(context);

    /**
     * 匹配关键字和电话,替换为***
     * @param content
     * @return
     */
    public static String regexWordAndMobile(String content){
        if(content==null) return "" ;
        if("".equals(content)) return "" ;

        //先替换电话,再替换关键字
        return regexKeyWord(regexMobile(content));
    }

    /**
     * 匹配关键字,替换为***
     * @param content
     * @return
     */
    public static String regexKeyWord(String content){
        return wordFilter.replace(content);
    }

    public static final String REGEX_MOBILE = "(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])\\d{8}";
    static Pattern p = Pattern.compile(REGEX_MOBILE);

    /**
     * 替换手机号码为********789,保留后三位
     * @param content
     * @return
     */
    public static String regexMobile(String content){
        Matcher m = p.matcher(content);
        String paramStr = new String(content);
        while (m.find()) { //一定需要先查找再调用group获取电话号码
            paramStr = paramStr.replaceAll(m.group(), "****");
        }
        return paramStr;
    }
}
